/*
 * @Author: chen haoxuan
 * @Date: 2021-05-29 21:44:28
 * @LastEditTime: 2021-05-29 21:58:03
 */
// 私有继承
/*
  私有基类的公用成员和保护成员在派生类中的访问属性相当于派生类中的私有成员，即派生类的成员函数能访问它们。
  
  既然声明为了私有继承，就表示原来能被外界引用的成员隐藏了起来，不让外界引用，因此私有基类的公用成员和保护成员理所应当成为派生类中的私有成员。
*/
#include <iostream>
using namespace std;
class Student // 声明基类
{
public:
  void get_value()
  {
    cin >> num >> name >> sex;
  }
  void display()
  {
    cout << "num: " << num << endl;
    cout << "name: " << name << endl;
    cout << "sex: " << sex << endl;
  }

private:
  int num;
  string name;
  char sex;
};
class Student1 : private Student
{
public:
  void get_value1()
  {
    cin >> age >> addr;
  }
  void display_1()
  {
    cout << "age: " << age << endl;
    cout << "address: " << addr << endl;
  }

private:
  int age;
  string addr;
};
int main()
{
  Student1 s1;
  // s1.display(); 错误 私有基类的公用成员在派生类中是私有函数
  s1.display_1();
  // s1.age=19;   错误 外界不能引用派生类的私有成员
}
